23731
1247
Jsem jen začátečník v kódování Swift. Můj nápad je docela jednoduchý, což je aplikace se dvěma tlačítky. Po kliknutí změní textové pole svůj text.
Na Main.StoryBoard přidám textové pole a dvě tlačítka.
V souboru ViewController.swift. Píšu takto:
importovat UIKit
třída ViewController: UIViewController {
@IBOutlet slabé var textové pole: UITextField!
@IBOutlet slabé tlačítko var: UIButton!
@IBOutlet slabé var tlačítko 2: UIButton!
@IBAction func action1 (_ odesílatel: UIButton) {
textfield.text = "právě jste klikli na button1"
}
@IBAction func action2 (_ odesílatel: UIButton) {
textfield.text = "právě jste klikli na button2"
}
}
Má to být v pořádku. Zobrazí se však chyba, která ukazuje:
thread1: signál SIGABRT
v souboru AppDelegate.swift řádek:
třída AppDelegate: UIResponder, UIApplicationDelegate
Co se děje s mým kódem? 
Chcete-li problém vyřešit, nejprve vyčistěte projekt a poté znovu sestavte.
Chcete-li projekt vyčistit, přejděte do MenuBar: Produkt -> Vyčistit
Poté projekt znovu sestavíte, stačí kliknout na tlačítko Spustit jako obvykle.
|
Kdykoli máte odpojenou zásuvku, zobrazí se chyba SIGABRT. Klikněte na svůj řadič zobrazení ve scénáři a přejděte na připojení na bočním panelu (symbol šipky). Zjistěte, zda tam máte další zásuvku, duplikát nebo další, která není připojena. Pokud to tak není, možná jste nepřipojili své zásuvky k vašemu kódu správně.
Nezapomeňte, že SIGABRT se stane, když se pokoušíte volat zásuvku (tlačítko, pohled, textové pole atd.), Která tam není.
|
Pro mě to nebyl odbyt. Problém jsem vyřešil přechodem k chybě a přečtením toho, co bylo uvedeno. (Také Noob ..)
To byla chyba:
A řešení bylo zde:
Stačí posunout nahoru na výstupu a chyba bude odhalena.
|
Běžným důvodem tohoto typu chyby je, že jste mohli změnit název IBOutlet nebo IBAction, můžete to jednoduše zkontrolovat tak, že přejdete ke zdrojovému kódu.
Klikněte na main.storyboard a poté vyberte otevřít jako
a poté vyberte zdrojový kód
otevře se zdrojový kód
a pak zkontrolujte, zda existuje název iboutlet nebo pouzection, který jste změnili, pokud existuje, vyberte část a odstraňte ji a poté znovu vytvořte iboutlet nebo ibaction.
To by mělo váš problém vyřešit
|
V mém případě jsem nedostával chybu, jen pád v AppDelegate a musel jsem zrušit zaškrtnutí další možnosti: OS_ACTIVITY_MODE, pak jsem mohl získat skutečný důvod pádu v mém souboru .xib
Doufám, že to může pomoci i vám :)
|
Měl jsem stejný problém. Udělal jsem tlačítko ve scénáři a připojil jsem ho k ViewController a později tlačítko odstranil. Připojení tedy stále existovalo, ale tlačítko nebylo, a tak jsem dostal stejnou chybu jako vy.
Opravit:
Přejděte na inspektor připojení (šipka v pravém horním rohu ve scénáři) a odstraňte všechna nepoužívaná připojení.
|
Pokud na to narazíte v Xcode 10, budete muset před sestavením vyčistit. Nebo přepněte na starší systém sestavení. Soubor -> Nastavení pracovního prostoru ... -> Build System: Legacy Build System.
|
V mém případě nebyl žádný záznam.
Moje chyba byla tlačit řadič zobrazení v navigačním zásobníku, který již byl součástí navigačního zásobníku.
|
Někdy se také stane, když je třeba funkci spustit pouze v hlavním vlákně, takže ji můžete opravit tak, že ji přiřadíte k hlavnímu vláknu následujícím způsobem: -
DispatchQueue.main.async {
váš kód zde
}
|
Pro mě byla tato chyba proto, že jsem měl připravený krok, který nebyl použitelný pro přechod, který se právě dělal.
dlouhý příběh:
přepsat func připravit (pro segue: UIStoryboardSegue, sender: Any?) {
ať gosetup = segue.destination jako! Aktualizace
gosetup.wherefrom = updatestring
}
Dělo se to pro všechny otroky, když to bylo jen pro jednoho. Takže vytvořím boolean a umístil jsem do něj gosetup.
|
Toto je velmi častá chyba a může nastat z několika důvodů. Nejběžnější je, když je IBOUTLET / IBACTION připojený k řadiči zobrazení ve scénáři odstraněn ze souboru swift, ale ne ze scénáře. Pokud tomu tak není, použijte protokol na spodním panelu nástrojů, abyste zjistili, o jakou chybu jde, a diagnostikovali ji. K nalezení chyby můžete použít zarážky a ladění.
Chcete-li zjistit, jak chybu opravit, použijte tento článek, který jsem našel na Googlu: https://rayaans.com/fixing-the-notorious-sigabrt-error-in-xcode
|
V mém případě jsem pro provádění vyhledávání používal RxSwift.
Značně jsem stále používal sdílenou instanci konkrétní třídy uvnitř metody onNext, což ji pravděpodobně znemožnilo (Mutex).
Zajistěte, aby se s takovými případy zacházelo opatrně, pouze pokud je to nezbytně nutné.
V mém případě jsem předem použil několik proměnných, abych bezpečně (a postupně) uložil návratové hodnoty metod sdílené instance a znovu je použil uvnitř bloku onNext.
|
Měl jsem stejný problém. V mém případě jsem soubor přepsal
GoogleService-Info.plist
na této cestě:
Platforma \ ios \ YOUR_APP_NAME \ Resources \ Resources
V mém případě byly soubory přítomny bez údajů.
|
Vysoce aktivní otázka. Získejte 10 reputace, abyste mohli odpovědět na tuto otázku. Požadavek na reputaci pomáhá chránit tuto otázku před spamem a neodpovědností.
Toto není odpověď, kterou hledáte? Projděte si další otázky se značkou ios swift nebo se zeptejte na vlastní otázku.